package com.ww.java.generic.method;

import com.ww.java.generic.api.Generator;

/**
 * Fibonacci都是int类型，但是其类型参数却是Integer，这个例子引出了Java泛型的一个局限性：基本类型无法作为类型参数。
 * @author wanggw
 * @Date 2023年01月01 16:58
 */
public class Fibonacci implements Generator<Integer> {
    private int count = 0;

    @Override
    public Integer next() {
        return fib(count++);
    }

    private int fib(int n) {
        if (n < 2) {
            return 1;
        }
        return fib(n - 2) + fib(n - 1);
    }

    public static void main(String[] args) {
        Fibonacci fibonacci = new Fibonacci();
        for (int i = 0; i < 18; i++) {
            System.out.print(fibonacci.next() + " ");
        }
    }
}
